#include <stdio.h>
#include <time.h>
#include <errno.h>
#include <string.h>
#define DOTENV_IMPLEMENTATION
#include "dotenv.hol.h"
#define DOTENV_EXT_IMPLEMENTATION
#include "dotenv_ext.h"

int main() {
    srand((unsigned int)time(NULL));

    // 确认文件路径和密钥正确
    const char* obfuscated_file = ".env.obf";  // 确保文件在当前目录
    const char* key = "mysecret123";           // 与混淆时的密钥完全一致

    // 先检查文件是否存在（可选，用于调试）
    FILE* test = fopen(obfuscated_file, "rb");
    if (!test) {
        printf("❌ 无法找到文件 %s，请检查路径是否正确\n", obfuscated_file);
        return 1;
    }
    fclose(test);

    // 加载混淆文件
    printf("=== 从预先混淆的文件加载变量 ===\n");
    dotenv_ext_result res = dotenv_load_from_obfuscated(
        obfuscated_file,
        key,
        0
    );
    if (res != DOTENV_EXT_SUCCESS) {
        printf("❌ 加载失败，错误码: %d, %s\n", res, strerror(errno));
        return 1;
    }
    printf("✅ 成功从 %s 加载变量\n\n", obfuscated_file);

    // 提取变量（示例）
    const char* db_host = dotenv_get("DATABASE_HOST");
    if (db_host) printf("数据库主机: %s\n", db_host);

    dotenv_clear();
    return 0;
}